// setTimeout(function(){
//     var a = "hello"
//     setTimeout(function(){
//         var b = "lagou"
//         setTimeout(function(){
//             var c = "I \u{2665} U"
//             console.log(a+b+c)
//         },10)
//     },10)
// },10)

//创建一个返回Promise的函数,通过观察发现setTimeout(function(){...},10)是公共部分，所以提取成如下代码
function _print(value){
    return new Promise((resolve,reject)=>{
        setTimeout(function(){
            resolve(value)
        },10)
    })
}
//第一次调用_print方法赋初始值"hello"，返回一个Promise对象
_print("hello")
    //调用第一个Promise的then方法，获取兑现的值"hello",并拼接"lagou"后作为参数，再次传给_print方法，并返回一个新的Promise，如果then的回调函数返回的是一个Promise，那么这个Promise直接作为then方法的返回值
    .then(value => _print(value+"lagou"))
    //执行上一个返回的Promise的then方法，其余同上
    .then(value => _print(value+"I \u{2665} U"))
    //调用所有参数拼接完毕的Promise，console.log作为回调函数会隐性传参，可以理解为value => console.log(value)的简写
    //在延迟了30ms后，打印最终结果
    .then(console.log)